import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

let actions = {
	//下面的：jia、jian这两个action，就是没有意义的action，因为里面不包含任何业务逻辑
	/* jia(miniStore,value){
		miniStore.commit('JIA',value)
	},
	jian(miniStore,value){
		miniStore.commit('JIAN',value)
	}, */

	//下面的：jiaOdd、jiaDyd这两个action，就是有意义的action，因为里面有业务逻辑
	jiaOdd(miniStore,value){
		//判断奇偶数（属于业务逻辑）
		if(miniStore.state.sum % 2){
			miniStore.commit('JIA',value)
		}
	},
	jiaDyd(miniStore,value){
		//开启定时器（业务逻辑）
		setTimeout(()=>{
			miniStore.commit('JIA',value)
		},500)
	},
	jiaFuwu(miniStore){
		axios.get('https://api.uixsj.cn/hitokoto/get?type=social').then(
			response => {
				alert(response.data)
				miniStore.commit('JIA',response.data.length)
			},
			error => {
				alert(error)
			}
		)
	}
}

//mutations是对数据进行最纯粹的操作，不允许：开定时器、发ajax请求等等
let mutations = {
	JIA(state,value){
		state.sum += value
	},
	JIAN(state,value){
		state.sum -= value
	}
}

let state = {
	sum:1, //和
	desc:'这是atguigu的求和案例'
}

let getters = {
	daHe(state){
		return state.sum * 10
	},
	daDesc(state){
		return state.desc.toUpperCase()
	}
}

//创建并暴露一个store对象
export default new Vuex.Store({
	actions,
	mutations,
	state,
	getters
})
